package cn.atzxc.qy.controller;

import cn.atzxc.qy.domain.ResponseResult;
import cn.atzxc.qy.domain.Task;
import cn.atzxc.qy.domain.vo.StudentCategoryHelpVo;
import cn.atzxc.qy.domain.vo.TaskVo;
import cn.atzxc.qy.service.TaskService;
import cn.atzxc.qy.utils.JwtUtil;
import com.alibaba.fastjson.JSON;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user/task")
public class TaskController {
    @Autowired
    private TaskService taskService;


    //任务大厅列出所有发布的任务
    //  1.如果用户如果已经登录，并已经设置了学校
    //      则显示指定并且已经选择学校，则返回指定学校的任务
    //      否则直接返回所有的数据
    //  2.如果用户没有登录，返回401，请先登录。
    @GetMapping("/list")
    public ResponseResult getTaskList(@RequestHeader("token") String token,
                                       @RequestParam("categoryId") Long categoryId) throws Exception {
        System.out.println("获取 到得分类ID为："+categoryId);
        List<TaskVo> tasks = taskService.getTaskList(token,categoryId);
        if (tasks == null) {
            return new ResponseResult(400,"用户未选择学校");
        }

        return new ResponseResult(200,"查询列表成功",tasks);
    }

    @PostMapping("/insert")
    public ResponseResult insertTaskByUserId(@RequestHeader("token") String token,
                                             @RequestBody Task task) throws Exception {
        String taskCode = taskService.addTask(token, task);
        System.out.println("获取到的任务编码为："+taskCode);
        if(taskCode.equals("error")){
            System.out.println("错误了");
            return new ResponseResult(402,"请您选择所属学校");
        }
        if(taskCode.equals("") || taskCode == "0"){
            return new ResponseResult(400,"发布任务失败",taskCode);
        }else{
            return new ResponseResult(200,"发布任务成功",taskCode);
        }
    }

    @GetMapping("isCurrentUser")
    public ResponseResult isCurrentUser(@RequestHeader("token") String token,
                                        @RequestParam("userid") Long userid) throws Exception {
        Claims claims = JwtUtil.parseJWT(token);
        String subject = claims.getSubject();
        Long userId = Long.parseLong(subject);//封装成为一个long类型
        System.out.println("解析出的ID为："+userId);
        //如果相等返回400
        if(userId.equals(userid)){
            return new ResponseResult(400,"当前任务就是该商品发布");
        }else {
            return new ResponseResult(200,"当前任务不是该商品发布");
        }
    }


    //查看指定用户发布的任务
    @GetMapping("listMyPublish")
    public ResponseResult listMyPublish(@RequestHeader("token") String token){
        //主要分为待付款，待接单，已送达（确认收货），已完成
        return new ResponseResult(200,"暂时无此功能");

    }


    //根据token区分用户。然后获取我发布的任务
    @GetMapping("/mylist")
    public ResponseResult getMyTaskList(@RequestHeader("token") String token) throws Exception {

        List<TaskVo> taskList = taskService.getMyTaskList(token);
        System.out.println("获取到我的任务列表："+taskList);
        return new ResponseResult(200,"查询列表成功",taskList);
    }

    //通过任务编号获取到task详细信息
    @GetMapping("/getTaskById")
    public ResponseResult getTaskById(@RequestHeader("token") String token,
                                      @RequestHeader("taskCode") String taskCode) throws Exception {

        System.out.println("taskCode:::"+taskCode.toString());
        TaskVo taskVo = taskService.getTaskById(token,taskCode);
        if (taskVo == null) {
            System.out.println("返回的数据为空");
            return new ResponseResult(400,"任务所属用户不同");
        }
        return new ResponseResult(200,"任务查询成功",taskVo);
    }







































}
